# -*- coding: utf-8 -*-

#本部分的目的是实现从一个文件夹中读取图片并识别出图中的圆形指示牌

# =============包含OpenCV库，os模块============= #
import  cv2
import  os
from graph import graph
# ============================================= #

# ===============全局变量======================= #
def face_detection(picroad,new_path):
  if not os.path.exists(new_path):
    # 如果筛选文件夹不存在则新建文件夹
        os.mkdir(new_path)
# ============================================= #

# ================主函数======================= #
#遍历文件夹中的所有图片
  a=0
  b=0
  #记录有人脸的图片数量
  for img_name in os.listdir(picroad):
    #输出读取的图片名
    print (img_name)
    #根据路径读取图片
    imageroad=picroad+img_name
    img=cv2.imread(imageroad)
    #显示图片
    cv2.namedWindow(img_name)
    #cv2.imshow(img_name,img)
    #灰度化
    try:
     gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
     face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_alt.xml')
     faces = face_cascade.detectMultiScale(gray,1.3,5,minSize=(30, 30))
     #使用分类器和训练数据进行人脸识别
     print('检测到的人脸个数是：')
     print(len(faces))
     if len(faces)==0:
      a=a+1
     else:
      b=b+1
    #在原图上框出人脸
     for (x,y,w,h) in faces:
            
        cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
       
        cv2.imshow(img_name,img)
        resultroad=new_path+img_name
        cv2.imwrite(resultroad,img)
        #将图片存入筛选后的文件夹
    except cv2.error:
      print("over")
  

 
 
  y=[a,b]
  print(y)
  x=["无","有"]
  graph(x,y)#画出统计图
  cv2.waitKey(0)  #按任意键退出
  cv2.destroyAllWindows()  #关闭所有窗口
  





